package io;

import java.io.*;

/*
对象流/处理流 ----高级流
1)ObjectInputStream和ObjectOutputStream
2)作用:进行对象的序列化和反序列化
3)对象序列化:将一个java对象转换为一组字节的过程叫做对象序列化
对象反序列化:将一组字节转换为一个java对象的过程叫做对象反序列化
 */
public class OOSDemo {
    public static void main(String[] args) throws IOException {
        /*
        Object readObject():
        对象输入流的readObject()可以进行对象的反序列化
        注意:对象输入流通过下面所连接的流来堵去的字节必须是对象输出流序列化对象之后的一组字节,否则会抛出异常
         */
        String name = "蔡徐坤";
        int age = 25;
        String gender = "男";
        String[] otherInFo = {"是练习时长两年半的个人练习生蔡徐坤","喜欢唱,跳,rap,篮球"};
        Student cxk = new Student(name,age,gender,otherInFo);
        System.out.println(cxk);
        /*
        对象输出流在序列化对象时需要保证序列化对象必须实现Serializable接口
        若没有实现则会发生异常
         */
        FileOutputStream fos = new FileOutputStream("student.obj");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(cxk);
        System.out.println("写出完毕!");
        oos.close();
    }
}
